Skip to main content

Import job applications

Introduction

Welcome to the API documentation for importing job applications. This API allows you to create applications in a specific job ads. It also tracks the status of the application and the history of status changes in Talent Acquisition.

This documentation presents the functional use of the API with the main use cases and the available data.


Prerequisites

  • Access token: required to make the request
  • Format: Send data in JSON format.

Context and use cases

Our API can meet several functional scenarios:

  1. Integration with a third-party careers site

    • Manage your own application process without redirecting the candidate to Talent Aquisition's process
    • Direct apply and send candidate to our Talent Acquisition account
  2. Integration with partner job portal

    • Allow job site to use this API to bypass the personalised experience you have configured for each of your ads
    • No longer redirect candidate to your career site and let the partner manage the application process
  3. Integration with co-optation partners

    • Import your talent, track progress through to recruitment
    • Manage your co-optations with your partners
  4. Import applications from your former ATS

    • Bulk import of you applications Data
    • Contact our technical team to ensure performance based on data volume

Important: you need to specified a job ad to import your application. You can't add a application in your candidate pool.


API Methods

Creating an Application into a job ad

HTTP method: 'POST'

This method allows you to create applications for an ad by submitting data directly into the call AND/OR by sending a file containing the application information (CV). Cegid HR Talent Acquisition then extracts the information from the file, which will be available on the form created for the application.

  • URL:

    {url-environment}/api/candidate/apply/{token}
  • Production environment example:

    https://app.digitalrecruiters.com/api/candidate/apply/XXXXXXXLIYEaAqdZyuJETmR9XX

Structure of the Call

{
"version": "<string>",
"consent_date": "<date>",
"s_o": "<string>",
"locale": "<string>",
"ApplicationMessage": "<object message>",
"ApplicationProfile": "<object application profile>",
"file": "<object file>"
}
  • reference(required): Unique reference of the ad (7 characters).
  • consent_date(required): Applicant's consent date in YYYY-mm-dd format.
  • s_o(required): Origin of the application (255 characters maximum).
  • locale(required): Location of the applicant, including the language for exchanges (5 characters).

Attention: Required fields contained in the ApplicationProfile may not be provided, provided that they can be extracted from the file. If the mandatory fields contained in the ApplicationProfile object are provided AND these fields are also extracted from the file, then the ApplicationProfile fields will be taken into account (instead of those extracted from the provided file). The ad reference can be obtained from your account or from the API Job Ad Export Feed.

Structure of the Response

  • Success:
    • 201: Creation successful, all data retrieved.
    • 202: Creation successful but missing information.

More details are provided in the body of the response:

{
"hash": "<string>",
"message": "<string>"
}
  • hash: Hash of the application created
  • message: Error messages

Structure of the Response in case of error

The response consists of an HTTP code (400, bad request or 500 internal error) as appropriate. More details are provided in the body of the response:

{
"code": "<integer>",
"message": "<array>"
}
  • code: Error code
  • message: Table containing the error message(s)

Error codes are referenced in the section 'Error codes'.

Monitoring the Status of an Application (option)

HTTP Method: GET

View the current stage and status of an application imported via the Application Import API.

  • URL:

    {url-environment}/api/candidate/status/{token}/{hash}
  • Production environment example:

    https://app.digitalrecruiters.com/api/candidate/status/XXXXXXXLIYEaAqdZyuJETmR9XX/xxxxHeu6Z3

Structure of the Response

{
"version": "<string>",
"fetched_at": "<date>",
"data": {
"hash": "<hash>",
"state": "<string>",
"imported_at": "<date>",
"last_step": "<object candidate status>",
"history_steps": [
"<object candidate status>"
]
}
}
  • version: version of the API
  • fetched_at: Date of API call
  • hash: Hash of the requested application (255 characters maximum)
  • state: status of the application. this field can have the following values:
    • active (the application is active)
    • anonymized (the application has been anonymized)
    • deleted (application has been deleted)
  • imported_at: date the application was imported into Talent Acquisition
  • last_step: the current step the application is at
  • history_steps: history of application step changes

Structure of the candidate status object

{
"level_labels": [
<locale> : <string>
],
"step_labels": [
<locale> : <string>
]
}
  • level_labels: table with the name of the status of the application in the locales available for the account.
  • step_labels: table with the name of the application step in the locales available for the account. This field is null for the levels: Application / Recruitment / Withdrawn / Refusal

Data Structure

Object Application Message

{
"message": "<string>"
}
  • message: Optionnal message from the candidate

Object Application Profile

{
"gender": "<integer>",
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phoneNumber": "<string>",
"job": "<string>",
"addressStreet": "<string>",
"addressZip": "<string>",
"addressCity": "<string>"
}
FieldRequiredDescriptionMax Length
genderYes (can be taken from the file)Candidate’s gender (1 = male, 2 = female)-
firstNameYes (can be taken from the file)Candidate’s first name255
lastNameYes (can be taken from the file)Candidate’s last name255
emailYes (can be taken from the file)Candidate’s email address (used for communication)255
phoneNumberNo (can be taken from the file)Candidate’s phone number in international format (e.g., +44XXXXXXXXX or 0044)255
jobNo (can be taken from the file)Candidate’s job title255
addressStreetNo (can be taken from the file)Candidate’s street address255
addressZipNo (can be taken from the file)Candidate’s ZIP code255
addressCityNo (can be taken from the file)Candidate’s city255

Object File

{
"content": "<string>",
"name": "<string>"
}
  • content: Base64 encoed file
  • file.name: Name of the file (255 characters)

Error Codes

CodeCause
1000Invalid token or insufficient rights
1001Error validating sent data
1011File upload failed
1012File too large (limited to 8MB)
1090Advertisement reference not determined
1091Invalid application hash
1777Unexpected error

Example Application Import

{
"reference": "5ZmXLGnX",
"consent_date": "2019-02-07 00:00:00",
"s_o": "API origin",
"locale": "fr_FR",
"ApplicationMessage": {
"message": "message du candidat"
},
"ApplicationProfile": {
"gender": 2,
"firstName": "Sandrine",
"lastName": "Franches",
"email": "sandrine@yopmail.com",
"phoneNumber": "0611111111",
"job": "Webmarketing Project Manager",
"addressStreet": "10 boulevard Jean Jaures",
"addressZip": "75014",
"addressCity": "Paris"
},
"file": {
"content": "UESDBBQABgAIAAAAIQCHKywEaQEAAIcFAAATAAgC...(base 64 encoded file)",
"name": "Sandrine-Franches.docx"
}
}

Example Application Status

{
"version": "1.0.1",
"fetched_at": "2019-07-19T07:46:22+00:00",
"data": {
"hash": "RG1654v9",
"state": "active",
"imported_at": "2019-07-19 09:44:43",
"current_step": {
"level_labels": {
"en_FR": "Proposition",
"en_GB": "Offer",
"es_ES": "Propuesta"
},
"step_labels": {
"en_GB": "Offer",
"es_ES": "Propuesta",
"en_FR": "Proposal"
},
"created_at": "2019-07-19 09:45:38"
},
"history_steps": [
{
"level_labels": {
"en_FR": "Proposal",
"en_GB": "Offer",
"es_ES": "Propuesta"
},
"step_labels": {
"en_GB": "Offer",
"es_ES": "Propuesta",
"en_FR": "Proposal"
},
"created_at": "2019-07-19 09:45:38"
},
{
"level_labels": {
"en_FR": "Qualification",
"en_GB": "Qualification",
"es_ES": "Cualificación"
},
"step_labels": {
"en_GB": "Qualification",
"es_ES": "Cualificación",
"en_GB": "Qualification"
},
"created_at": "2019-07-19 09:45:19"
},
{
"level_labels": {
"en_GB": "Preselection",
"en_GB": "Preselection",
"es_ES": "Preselección"
},
"step_labels": {
"en_FR": "Preselection 2"
},
"created_at": "2019-07-19 09:45:17"
},
{
"level_labels": {
"en_FR": "Preselection",
"en_GB": "Preselection",
"es_ES": "Preselección"
},
"step_labels": {
"en_GB": "Preselection",
"es_ES": "Preselección",
"fr_FR": "Preselection"
},
"created_at": "2019-07-19 09:45:14"
},
{
"level_labels": {
"fr_FR": "Candidature",
"en_GB": "Application",
"es_ES": "Candidatura"
},
"step_labels": null,
"created_at": "2019-07-19 09:44:43"
}
]
}
}

Best practices and additional information

  • The data is formatted in JSON
  • Date field are provided in W3C (ISO 8601) format: https://www.w3.org/TR/NOTE-datetime
  • The hash fields (unique identifiers) can contgain the following characters: [a-zA-Z1-9]
  • If you need to integrate a large volume of data, please contact the support team beforehand.

Need help? Contact technical support or your Talent Acquisition contact for:

  • Obtaining or creating a token
  • Bulk import applications

Thank you for using the API to import a job application! We are happy to help you seamlessly integrate your job applications and streamline your recruitment processes.

Summary

  1. Introduction
  2. Quick Start (Guide de démarrage)
  3. Prerequisites
  4. Context and use cases
  5. API Methods
  6. Data structure
  7. Selecting and filtering job ads
  8. Full example of a job ad
  9. Best practices and additional information
  10. Next steps

Introduction

Welcome to the API documentation for importing an application. This API allows you to create applications in a specific job ads. It also tracks the status of the application and the history of status changes in Talent Acquisition.

This documentation presents the functional use of the API with the main use cases and the available data.


Quick Start

This section provides an overview to quickly use the API:

Obtain your token

You must have an access token to call the API. It is provided by technical support upon request.

Make a first call

curl -X POST {url-environnement}/api/candidate/apply/{token}

Production environment example:

curl -X POST https://app.digitalrecruiters.com/api/candidate/apply/XXXXXXXLIYEaAqdZyuJGETmR9XX

Including the body with the applications data (see below)

Analyze the response

You will get a response code of 201 or 202. This means that your application has been created successfully!


Prerequisites

  • Access token: required to make the request
  • Cegid HR Talent Acquisition account: not required to use this API, but you must still collaborate with the support team to generate the feed.
  • Format: Send data in JSON format.

Context and use cases

Our API can meet several functional scenarios:

  1. Integration with a third-party careers site

    • Manage your own application process without redirecting the candidate to Talent Aquisition's process
    • Direct apply and send candidate to our Talent Acquisition account
  2. Integration with partner job portal

    • Allow job site to use this API to bypass the personalised experience you have configured for each of your ads
    • No longer redirect candidate to your career site and let the partner manage the application process
  3. Integration with cooptation partners

    • Import your talent, track progress through to recruitment
    • Manage your co-optations with your partners
  4. Import applications from your former ATS

    • Bulk import of you applications Data
    • Contact our technical team to ensure performance based on data volume

Important: you need to specified a job ad to import your application. You can't add a application in your candidate pool.


API Methods

Creating an Application into a job ad

HTTP method: 'POST'

This method allows you to create applications for an ad by submitting data directly into the call AND/OR by sending a file containing the application information (CV). Cegid HR Talent Acquisition then extracts the information from the file, which will be available on the form created for the application.

  • URL:

    {url-environment}/api/candidate/apply/{token}
  • Production environment example:

    https://app.digitalrecruiters.com/api/candidate/apply/XXXXXXXLIYEaAqdZyuJETmR9XX

Structure of the Call

{
"version": "<string>",
"consent_date": "<date>",
"s_o": "<string>",
"locale": "<string>",
"ApplicationMessage": "<object message>",
"ApplicationProfile": "<object application profile>",
"file": "<object file>"
}
  • reference(required): Unique reference of the ad (7 characters).
  • consent_date(required): Applicant's consent date in YYYY-mm-dd format.
  • s_o(required): Origin of the application (255 characters maximum).
  • locale(required): Location of the applicant, including the language for exchanges (5 characters).

Attention: Required fields contained in the ApplicationProfile may not be provided, provided that they can be extracted from the file. If the mandatory fields contained in the ApplicationProfile object are provided AND these fields are also extracted from the file, then the ApplicationProfile fields will be taken into account (instead of those extracted from the provided file). The ad reference can be obtained from the application or from the ad export stream (access available on request).

Structure of the Response

  • Success:
    • 201: Creation successful, all data retrieved.
    • 202: Creation successful but missing information.

More details are provided in the body of the response:

{
"hash": "<string>",
"message": "<string>"
}
  • hash: Hash of the application created
  • message: Error messages

Structure of the Response in case of error

The response consists of an HTTP code (400, bad request or 500 internal error) as appropriate. More details are provided in the body of the response:

{
"code": "<integer>",
"message": "<array>"
}
  • code: Error code
  • message: Table containing the error message(s)

Error codes are referenced in the section 'Error codes'.

Monitoring the Status of an Application

HTTP Method: GET

View the current stage and status of an application imported via the Application Import API.

  • URL:

    {url-environment}/api/candidate/status/{token}/{hash}
  • Production environment example:

    https://app.digitalrecruiters.com/api/candidate/status/XXXXXXXLIYEaAqdZyuJETmR9XX/xxxxHeu6Z3

Structure of the Response

{
"version": "<string>",
"fetched_at": "<date>",
"data": {
"hash": "<hash>",
"state": "<string>",
"imported_at": "<date>",
"last_step": "<object candidate status>",
"history_steps": [
"<object candidate status>"
]
}
}
  • version: version of the API
  • fetched_at: Date of API call
  • hash: Hash of the requested application (255 characters maximum)
  • state: status of the application. this field can have the following values:
    • active (the application is active)
    • anonymized (the application has been anonymized)
    • deleted (application has been deleted)
  • imported_at: date the application was imported into Talent Acquisition
  • last_step: the current step the application is at
  • history_steps: history of application step changes

Structure of the candidate status object

{
"level_labels": [
<locale> : <string>
],
"step_labels": [
<locale> : <string>
]
}
  • level_labels: table with the name of the status of the application in the locales available for the account.
  • step_labels: table with the name of the application step in the locales available for the account. This field is null for the levels: Application / Recruitment / Withdrawn / Refusal

Data Structure

Object Application Message

{
"message": "<string>"
}
  • message: Optionnal message from the candidate

Object Application Profile

{
"gender": "<integer>",
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phoneNumber": "<string>",
"job": "<string>",
"addressStreet": "<string>",
"addressZip": "<string>",
"addressCity": "<string>"
}
FieldRequiredDescriptionMax Length
genderYes (can be taken from the file)Candidate’s gender (1 = male, 2 = female)-
firstNameYes (can be taken from the file)Candidate’s first name255
lastNameYes (can be taken from the file)Candidate’s last name255
emailYes (can be taken from the file)Candidate’s email address (used for communication)255
phoneNumberNo (can be taken from the file)Candidate’s phone number in international format (e.g., +44XXXXXXXXX or 0044)255
jobNo (can be taken from the file)Candidate’s job title255
addressStreetNo (can be taken from the file)Candidate’s street address255
addressZipNo (can be taken from the file)Candidate’s ZIP code255
addressCityNo (can be taken from the file)Candidate’s city255

Object File

{
"content": "<string>",
"name": "<string>"
}
  • content: Base64 encoed file
  • file.name: Name of the file (255 characters)

Error Codes

CodeCause
1000Invalid token or insufficient rights
1001Error validating sent data
1011File upload failed
1012File too large (limited to 8MB)
1090Advertisement reference not determined
1091Invalid application hash
1777Unexpected error

Example Application Import

{
"reference": "5ZmXLGnX",
"consent_date": "2019-02-07 00:00:00",
"s_o": "API origin",
"locale": "fr_FR",
"ApplicationMessage": {
"message": "message du candidat"
},
"ApplicationProfile": {
"gender": 2,
"firstName": "Sandrine",
"lastName": "Franches",
"email": "sandrine@yopmail.com",
"phoneNumber": "0619192992",
"job": "Webmarketing Project Manager",
"addressStreet": "45 boulevard Jourdan",
"addressZip": "75014",
"addressCity": "Paris"
},
"file": {
"content": "UESDBBQABgAIAAAAIQCHKywEaQEAAIcFAAATAAgC...(base 64 encoded file)",
"name": "Sandrine-Franches.docx"
}
}

Example Application Status

{
"version": "1.0.1",
"fetched_at": "2019-07-19T07:46:22+00:00",
"data": {
"hash": "RG1654v9",
"state": "active",
"imported_at": "2019-07-19 09:44:43",
"current_step": {
"level_labels": {
"en_FR": "Proposition",
"en_GB": "Offer",
"es_ES": "Propuesta"
},
"step_labels": {
"en_GB": "Offer",
"es_ES": "Propuesta",
"en_FR": "Proposal"
},
"created_at": "2019-07-19 09:45:38"
},
"history_steps": [
{
"level_labels": {
"en_FR": "Proposal",
"en_GB": "Offer",
"es_ES": "Propuesta"
},
"step_labels": {
"en_GB": "Offer",
"es_ES": "Propuesta",
"en_FR": "Proposal"
},
"created_at": "2019-07-19 09:45:38"
},
{
"level_labels": {
"en_FR": "Qualification",
"en_GB": "Qualification",
"es_ES": "Cualificación"
},
"step_labels": {
"en_GB": "Qualification",
"es_ES": "Cualificación",
"en_GB": "Qualification"
},
"created_at": "2019-07-19 09:45:19"
},
{
"level_labels": {
"en_GB": "Preselection",
"en_GB": "Preselection",
"es_ES": "Preselección"
},
"step_labels": {
"en_FR": "Preselection 2"
},
"created_at": "2019-07-19 09:45:17"
},
{
"level_labels": {
"en_FR": "Preselection",
"en_GB": "Preselection",
"es_ES": "Preselección"
},
"step_labels": {
"en_GB": "Preselection",
"es_ES": "Preselección",
"fr_FR": "Preselection"
},
"created_at": "2019-07-19 09:45:14"
},
{
"level_labels": {
"fr_FR": "Candidature",
"en_GB": "Application",
"es_ES": "Candidatura"
},
"step_labels": null,
"created_at": "2019-07-19 09:44:43"
}
]
}
}

Best practices and additional information

  1. The data is formatted in JSON

  2. Date field are provided in W3C (ISO 8601) format: https://www.w3.org/TR/NOTE-datetime

  3. The hash fields (unique identifiers) can contgain the following characters: [a-zA-Z1-9]


Need help? Contact technical support or your Talent Acquisition contact for:

  • Obtaining or creating a token
  • Bulk import applications

Thank you for using the API to import a job application! We are happy to help you seamlessly integrate your job offers and streamline your recruitment processes.